home *** CD-ROM | disk | FTP | other *** search
/ Freelog Special Freeware 31 / FreelogHS31.iso / ArgentCompta / FASTCAISSE / Setup FASTCAISSE.exe / {app} / A faire70.sql < prev    next >
Text File  |  2005-06-01  |  4KB  |  168 lines

  1. /* SUPPRIMER LES DEPENDANCES ENVERS LIGNES.PRIX */
  2. DROP VIEW "LIGNES1";
  3. DROP VIEW "LIGNES2";
  4. DROP PROCEDURE "UPDATE_REMISE_CLIENTS";
  5. COMMIT;
  6. DROP PROCEDURE "GET_REMISE_CLIENTS";
  7. COMMIT;
  8. DROP PROCEDURE "GET_CA_CLIENT";
  9. COMMIT;
  10.  
  11. ALTER TABLE LIGNES ALTER COLUMN PRIX TYPE DECIMAL(14,6);
  12. ALTER TABLE LIGNEMACRO ALTER COLUMN PRIX TYPE DECIMAL(14,6);
  13. COMMIT;
  14.  
  15. CREATE VIEW "LIGNES1" (
  16.   "DATEPIECE",
  17.   "INDEXPIECE",
  18.   "NOLIGNE",
  19.   "INDEXARTICLE",
  20.   "QUANTITE",
  21.   "RAYON",
  22.   "TOTALTTC"
  23. ) AS
  24.  
  25.  
  26. select CAST(DATEPIECE AS DATE),
  27. l.INDEXPIECE,l.NOLIGNE,l.INDEXARTICLE,L.QUANTITE,
  28. A.RAYON*10000+A.FAMILLE*100+A.SSFAMILLE,
  29. CAST(l.PRIX*l.QUANTITE*(10000+TVA-((REMISE+PCREDUC+PCESCOMPTE)*100))/10000 AS DECIMAL(12,2))
  30. from pieces P
  31. JOIN LIGNES L ON L.INDEXPIECE=P.INDX
  32. JOIN ARTICLES A ON A.INDX=L.INDEXARTICLE
  33. WHERE Z=1 AND (PRIX*QUANTITE)<>0
  34. ;
  35.  
  36. /* View: LIGNES2, Owner: SYSDBA */
  37.  
  38. CREATE VIEW "LIGNES2" (
  39.   "DATEPIECE",
  40.   "INDEXPIECE",
  41.   "NOLIGNE",
  42.   "INDEXARTICLE",
  43.   "QTE",
  44.   "PKEYRAYON",
  45.   "TOTALTTC",
  46.   "DPAUHT",
  47.   "PMPA",
  48.   "MOIS",
  49.   "ANNEE"
  50. ) AS
  51.  
  52.  
  53.  
  54.  
  55. select CAST(DATEPIECE AS DATE),
  56. l.INDEXPIECE,l.NOLIGNE,l.INDEXARTICLE,QUANTITE,
  57. A.RAYON*10000+A.FAMILLE*100+A.SSFAMILLE,
  58. CAST(l.PRIX*l.QUANTITE*(10000+TVA-((REMISE+PCREDUC+PCESCOMPTE)*100))/10000 AS DECIMAL(12,2)),
  59. A.DPAUHT,A.PMPA,
  60. CAST(SUBSTR(DATEPIECE,6,7) AS SMALLINT),
  61. CAST(SUBSTR(DATEPIECE,1,4) AS SMALLINT)
  62. from pieces P
  63. JOIN LIGNES L ON L.INDEXPIECE=P.INDX AND (PRIX*QUANTITE)<>0
  64. JOIN ARTICLES A ON A.INDX=L.INDEXARTICLE
  65. WHERE Z=1
  66. ;
  67.  
  68. COMMIT;
  69.  
  70. CREATE PROCEDURE "GET_CA_CLIENT"
  71. (
  72.   "INDEX_CLIENT" INTEGER,
  73.   "DATEDEB" DATE,
  74.   "DATEFIN" DATE
  75. )
  76. RETURNS
  77. (
  78.   "CA" DECIMAL(14, 2),
  79.   "CA_TOTAL" DECIMAL(14, 2)
  80. )
  81. AS
  82. DECLARE VARIABLE CA1 DECIMAL(14,2);
  83. DECLARE VARIABLE CA2 DECIMAL(14,2);
  84. BEGIN
  85. select SUM(TOTALTTC) FROM PIECES WHERE NOTIERS=:INDEX_CLIENT
  86.                                    AND Z=1
  87.                                    AND DATEPIECE>=:DATEDEB
  88.                                    AND DATEPIECE<=:DATEFIN
  89.                                    INTO :CA_TOTAL;
  90. IF ((NOT CA_TOTAL IS NULL) AND (CA_TOTAL<>0)) then
  91.   BEGIN
  92.   /* CALCUL DES LIGNES HORS-CA */
  93.   SELECT SUM(CAST(L.PRIX*L.QUANTITE*(10000+L.TVA-(L.REMISE*100))/10000 AS DECIMAL(12,2))) from lignes L
  94.   join pieces p on p.indx=l.indexpiece
  95.               AND P.NOTIERS=:INDEX_CLIENT
  96.               AND P.Z=1
  97.               AND P.DATEPIECE>=:DATEDEB
  98.               AND P.DATEPIECE<=:DATEFIN
  99.   JOIN ARTICLES A ON A.INDX=L.INDEXARTICLE
  100.   JOIN RAYONS R ON R.PKEY=A.PKEYR
  101.   WHERE R.HORS_CA=1 OR A.HORS_CA=1
  102.   INTO :CA1;
  103.  
  104.   IF (CA1 IS NULL) THEN CA = :CA_TOTAL; ELSE CA = :CA_TOTAL - :CA1;
  105.   END
  106. ELSE
  107.   BEGIN
  108.   CA = 0;
  109.   CA_TOTAL = 0;
  110.   END
  111. SUSPEND;
  112. END
  113. ;
  114. COMMIT;
  115.  
  116. CREATE PROCEDURE "GET_REMISE_CLIENTS"
  117. (
  118.   "DATEDEB" DATE,
  119.   "DATEFIN" DATE
  120. )
  121. RETURNS
  122. (
  123.   "INDEX_CLIENT" INTEGER,
  124.   "CA" DECIMAL(14, 2),
  125.   "REMISE" DECIMAL(5, 2),
  126.   "CA_TOTAL" DECIMAL(14, 2)
  127. )
  128. AS
  129. BEGIN
  130. FOR SELECT INDX FROM CLIENTS INTO :INDEX_CLIENT DO
  131.   BEGIN
  132.   SELECT "CA","CA_TOTAL" FROM GET_CA_CLIENT(:INDEX_CLIENT,:DATEDEB,:DATEFIN) INTO CA,CA_TOTAL;
  133.   IF (CA IS NULL) THEN
  134.     BEGIN
  135.     REMISE=0;
  136.     CA = 0;
  137.     END
  138.   ELSE SELECT "REMISE" FROM CALCUL_REMISE(:CA) INTO :REMISE;
  139.   SUSPEND;
  140.   END
  141. END
  142. ;
  143. COMMIT;
  144.  
  145. CREATE PROCEDURE "UPDATE_REMISE_CLIENTS"
  146. (
  147.   "DATEDEB" DATE,
  148.   "DATEFIN" DATE
  149. )
  150. AS
  151. DECLARE VARIABLE "INDEX_CLIENT" INTEGER;
  152. DECLARE VARIABLE "CA" DECIMAL(14, 2);
  153. DECLARE VARIABLE "REMISE" DECIMAL(5, 2);
  154. BEGIN
  155. FOR SELECT INDX FROM CLIENTS INTO :INDEX_CLIENT DO
  156.   BEGIN
  157.   SELECT "CA" FROM GET_CA_CLIENT(:INDEX_CLIENT,:DATEDEB,:DATEFIN) INTO :CA;
  158.   IF (CA IS NULL) THEN REMISE=0;
  159.   ELSE SELECT "REMISE" FROM CALCUL_REMISE(:CA) INTO :REMISE;
  160.   UPDATE CLIENTS SET "REMISE"=:REMISE WHERE "INDX"=:INDEX_CLIENT;
  161.   END
  162. END
  163.  ;
  164.  
  165. COMMIT;
  166. SET GENERATOR VERSION_BASE TO 70;
  167.  
  168.